package com.guyu.plugin.password;


import cn.hutool.core.lang.Pair;

import java.io.Serializable;

public interface IPassword extends Serializable {

    /**
     * 加密
     *
     * @param password 明文密码
     * @return 编码为Hex字符串
     */
    String encrypt(String password);

    /**
     * 解密
     *
     * @param encryptPassword 加密后的字符串
     * @return 明文密码
     */
    String decrypt(String encryptPassword);

    /**
     * 生成密码摘要
     *
     * @param password 明文密码
     * @return 摘要
     */
    String digestHex(String password);

    /**
     * 校验密码是否一致
     *
     * @param encryptPassword 加密后的密码
     * @param hexPassword     要比对的密码摘要
     */
    boolean verify(String encryptPassword, String hexPassword);

    /**
     * 生成随机密码
     *
     * @return <明文密码，摘要>
     */
    Pair<String, String> genPassword();

    /**
     * 生成密码对应密文
     *
     * @param password 明文密码
     * @return <明文密码，摘要>
     */
    Pair<String, String> genPassword(String password);

    /**
     * 检查密码是否符合规则
     *
     * @param password 明文密码
     */
    boolean check(String password);
}
